package cn.edu.tju.elm.service;

import cn.edu.tju.core.model.User;
import cn.edu.tju.elm.dto.ReviewDto;
import cn.edu.tju.elm.model.Review;

import java.util.List;

public interface ReviewService {

    /**
     * 创建新评价
     * 
     * @param reviewDto 评价数据
     * @param currentUser 当前用户
     * @return 已保存的评价
     */
    Review createReview(ReviewDto reviewDto, User currentUser);

    /**
     * 获取订单的评价
     * 
     * @param orderId 订单ID
     * @return 评价对象，如果没有则返回null
     */
    ReviewDto getReviewByOrderId(Long orderId);

    /**
     * 获取用户的所有评价
     * 
     * @param userId 用户ID
     * @return 评价列表
     */
    List<ReviewDto> getReviewsByUserId(Long userId);

    /**
     * 获取商家的所有评价
     * 
     * @param businessId 商家ID
     * @return 评价列表
     */
    List<ReviewDto> getReviewsByBusinessId(Long businessId);

    /**
     * 获取商品的所有评价
     * 
     * @param foodId 商品ID
     * @return 评价列表
     */
    List<ReviewDto> getReviewsByFoodId(Long foodId);

    /**
     * 删除评价
     * 
     * @param reviewId 评价ID
     * @param currentUser 当前用户
     * @return 是否删除成功
     */
    boolean deleteReview(Long reviewId, User currentUser);

    /**
     * 获取商家的平均评分
     * 
     * @param businessId 商家ID
     * @return 平均评分
     */
    Double getAverageRatingForBusiness(Long businessId);
} 